// pages/car/car.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cart_nums: '', // 购物车数量
    isNone: false, // 购物车有无商品
    noMore: false, // 没有更多了？
    charge: true, // 默认管理状态
    hots: [], // 推荐商品列表
    list: [], // 列表
    page: 1,
    pagesize: 6,
    totalPrice: 0.00, // 总价
    selectAll: false, // 是否全选
    selectType: '', // 所选商品的类型 1正常商品 2活动商品
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.setData({
      cart_nums: wx.getStorageSync('cart_nums')
    })
    if(app.globalData.userId){
      this.initData();
      this.getData();
      this.getCarts();
    }else{
      let that = this;
      wx.showModal({
        title: '温馨提示',
        content: '您还未登录,请先登录!',
        confirmText: '去登录',
        confirmColor: '#57b127',
        success(res) {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/wxLogin/wxLogin',
            })
          } else if (res.cancel) {
            that.setData({
              isNone: true
            })
            // that.getData();
          }
        }
      })
    }
  },


  // 获取数据
  getData(){
    app.loading();
    let that = this;
    wx.request({
      url: app.baseURL + 'item/getShopingCart',
      data: {
        token: app.globalData.userId,
        page: this.data.page,
        pagesize: this.data.pagesize
      },
      success(data){
        let res = data.data;
        wx.hideLoading();
        if(res.code == 1){
          that.setData({
            delivery_methods: res.data.delivery_methods
          })
          if (res.data.cart_list.length > 0){
            res.data.cart_list.forEach((item) =>{
              item.selected = false
            })
            that.setData({
              list: [...that.data.list, ...res.data.cart_list],
              noMore: Number(res.data.cart_list.length) >= Number(that.data.pagesize) ? false : true,
            })
          }
          // 判断是否为空列表
          if(that.data.list.length > 0){
            that.setData({
              isNone: false
            })
          }else{
            that.setData({
              isNone: true
            })
          }

          // 判断是否有推荐商品
          if (res.data.item_list.length > 0){
            that.setData({
              hots: res.data.item_list
            })
          }
        }else{
          if (res.msg == '请登录后操作'){
            let that = this;
            wx.showModal({
              title: '温馨提示',
              content: '您的登录已失效,请重新登录!',
              confirmText: '去登录',
              confirmColor: '#57b127',
              success(res) {
                if (res.confirm) {
                  wx.navigateTo({
                    url: '/pages/wxLogin/wxLogin',
                  })
                } else if (res.cancel) {
                  that.setData({
                    isNone: true
                  })
                }
              }
            })
            app.globalData.userId = '';
            wx.removeStorageSync('cart_nums');
            wx.removeStorageSync('userInfos');
            wx.removeStorageSync('userId');
          }else{
            app.$tip(res.msg);
          }
        }
        
      },
    })
  },

  // 获取购物车数量
  getCarts() {
    let that = this;
    wx.request({
      url: app.baseURL + 'Mycenter/my_center?token=' + app.globalData.userId,
      success(data) {
        let res = data.data;
        if (res.code == 1) {
          that.setData({
            cart_nums: res.data.shopping_cart_num
          })
          if(res.data.info){
            wx.setStorageSync('cart_nums', res.data.shopping_cart_num);
            wx.setStorageSync('userInfos', JSON.stringify(res.data.info));
          }
        }
      }
    })
  },

  // 格式化
  initData(){
    this.setData({
      page: 1,
      list: [],
      isNone: false,
      noMore: false,
      selectAll: false,
      totalPrice: 0,
      charge: true,
      selectType: ''
    })
  },

  // 去商品详情
  toDetail(e){
    let id = e.currentTarget.dataset.id;
    let actId = e.currentTarget.dataset.actid;
    let goodsStatus = e.currentTarget.dataset.status;
    let type = e.currentTarget.dataset.type;
    
    // 判断是否下架
    if(goodsStatus == 20){
      app.$tip('该商品已下架');
      return
    }

    // 商品类型 1正常商品 2限时 3特价
    if(type == 1){
      wx.navigateTo({
        url: '/pages/goods_detail/goods_detail?id='+id,
      })
    }else{
      wx.navigateTo({
        url: '/pages/kill_detail/kill_detail?id=' + id + '&actId=' + actId,
      })
    }
  },

  // 去商品详情
  toIntro(e){
    let id = e.currentTarget.dataset.id;
    let actId = e.currentTarget.dataset.actid;
    // 商品类型 0正常商品 1拼团商品 2秒杀
    let type = e.currentTarget.dataset.type;
    if(type == 0){
      wx.navigateTo({
        url: '/pages/goods_detail/goods_detail?id='+id,
      })
    }else{
      wx.navigateTo({
        url: '/pages/kill_detail/kill_detail?id=' + id + '&actId=' + actId,
      })
    }
  },

  // 删除当前商品
  delThis(e){
    let carId = e.currentTarget.dataset.id, that = this;
    wx.showModal({
      title: '温馨提示',
      content: '您确定要删除当前商品?',
      confirmText: '删除',
      confirmColor: '#57b127',
      success(res){
        if(res.confirm){
          app.loading();
          wx.request({
            url: app.baseURL + 'item/delShopingCart',
            data: {
              token: app.globalData.userId,
              ids: carId
            },
            success(data) {
              let ress = data.data;
              if (ress.code == 1) {
                app.$tip(ress.msg)
                setTimeout(() => {
                  that.initData();
                  that.getData();
                  that.getCarts();
                }, 1500)
              } else {
                app.$tip(ress.msg)
              }
            }
          })
        }
      }
    })
  },

  // 改变管理状态
  change(){
    this.setData({
      charge: !this.data.charge
    })
  },

  // 数量变化
  // 减
  cutNum(e){
    let that  = this,
      findex = e.currentTarget.dataset.findex,
      old = this.data.list,
      id = old[findex].id,
      limit = old[findex].limit_num ? old[findex].limit_num : 0;
    if (Number(old[findex].num) > 1){
      app.loading();
      wx.request({
        url: app.baseURL + 'item/addShopingCartNums',
        data: {
          token: app.globalData.userId,
          id: id,
          num: 1,
          type: 2
        },
        success(data){
          let res = data.data;
          wx.hideLoading();
          if(res.code == 1){
            old[findex].num = Number(old[findex].num) - 1
            that.setData({
              list: old
            })
            that.getPrice();
          }else{
            app.$tip(res.msg)
          }
          
        }
      })
    }else{
      app.$tip('购买数量不能少于1!')
    }
  },
  // 加
  addNum(e){
    let that = this,
      findex = e.currentTarget.dataset.findex,
      old = this.data.list,
      id = old[findex].id,
      limit = old[findex].limit_num ? old[findex].limit_num : 0;
    // 判断是否限购
    // 不限购
    if(limit < 1){
      // 判断库存
      // 库存充足
      if (Number(old[findex].num) < Number(old[findex].stock_num)) {
        app.loading();
        wx.request({
          url: app.baseURL + 'item/addShopingCartNums',
          data: {
            token: app.globalData.userId,
            id: id,
            num: 1,
            type: 1
          },
          success(data) {
            let res = data.data;
            wx.hideLoading();
            if (res.code == 1) {
              old[findex].num = Number(old[findex].num) + 1
              that.setData({
                list: old
              })
              that.getPrice();
            } else {
              app.$tip(res.msg)
            }
          }
        })
      }else{
        app.$tip('库存不足!');
      }
    }else{
      // 限购
      // 判断库存和限购哪个大
      // 库存大于限购 判断限购
      if(limit < Number(old[findex].stock_num)){
        // 判断是否大于库存
        if(Number(old[findex].num) < limit){
          app.loading();
          wx.request({
            url: app.baseURL + 'item/addShopingCartNums',
            data: {
              token: app.globalData.userId,
              id: id,
              num: 1,
              type: 1
            },
            success(data) {
              let res = data.data;
              wx.hideLoading();
              if (res.code == 1) {
                old[findex].num = Number(old[findex].num) + 1
                that.setData({
                  list: old
                })
                that.getPrice();
              } else {
                app.$tip(res.msg)
              }
            }
          })
        }else{
          app.$tip('该商品限购'+limit + '件!');
        }
      }
      // 限购大于库存 判断库存
      if(limit >= Number(old[findex].stock_num)){
        // 判断是否大于库存
        if (Number(old[findex].num) < Number(old[findex].stock_num)) {
          app.loading();
          wx.request({
            url: app.baseURL + 'item/addShopingCartNums',
            data: {
              token: app.globalData.userId,
              id: id,
              num: 1,
              type: 1
            },
            success(data) {
              let res = data.data;
              wx.hideLoading();
              if (res.code == 1) {
                old[findex].num = Number(old[findex].num) + 1
                that.setData({
                  list: old
                })
                that.getPrice();
              } else {
                app.$tip(res.msg)
              }
            }
          })
        } else {
          app.$tip('库存不足!');
        }
      }
    }
  },

  // 单选
  chooseThis(e){
    // 下标、数据、长度、商品类型
    let findex = e.currentTarget.dataset.findex,old = this.data.list,len = 0, that = this,goodsType = e.currentTarget.dataset.type;
    console.log(goodsType)
    // 判断商品是否正常
    if (old[findex].status == 20){
      app.$tip('该商品已下架!');
      return
    }
    if (old[findex].status == 30){
      app.$tip('该商品已删除!');
      return
    }
    // 判断是否已经选过商品
    // if (!that.data.selectType){
    //   that.setData({
    //     selectType: goodsType
    //   })
    // }
    // 判断是否相同类型的商品
    // if (old[findex].type != that.data.selectType){
    //   app.$tip('请选择相同类型的商品!');
    //   return
    // }
    // 更改选择状态
    old[findex].selected = !old[findex].selected;
    old.forEach((item) => {
      if (item.selected) {
        len++
      }
    })
    // if(len < 1){
    //   that.setData({
    //     selectType: ''
    //   })
    // }
    this.setData({
      list: old,
    })

    // 计算价格
    this.getPrice();

    // 判断单选是否满足了全选
    // let lastLen = 0;
    // that.data.list.forEach((item) =>{
    //   if(item.type == that.data.selectType){
    //     lastLen++
    //   }
    // })
    // if(len == lastLen){
    //   that.setData({
    //     selectAll: true
    //   })
    // }else{
    //   that.setData({
    //     selectAll: false
    //   })
    // }
    if (len >= Number(that.data.list.length)){
      this.setData({
        selectAll: true
      })
    }else{
      this.setData({
        selectAll: false
      })
    }

  },

  // 全选
  chooseAll(){
    let old = this.data.list,that = this;
    // 没有选择默认第一个商品类型
    // if (!that.data.selectType){
    //   that.setData({
    //     selectType: old[0].type
    //   })
    // }

    old.forEach((item) =>{
      // 选择类型相同的商品
      // if(item.type == that.data.selectType){
        // 取消全选
        if (that.data.selectAll){
          item.selected = false
        }else{
          // 全选
          item.selected = true
        }
      // }
    })
    that.setData({
      list: old,
      selectAll: !that.data.selectAll
    })
    // let len = 0;
    // old.forEach((item) =>{
    //   if(item.selected){
    //     len++
    //   }
    // })
    // if(len < 1){
    //   that.setData({
    //     selectType: ''
    //   })
    // }else{
    //   app.$tip('活动商品不能与普通商品同时下单!')
    // }
    this.getPrice();
  },

  // 计算价格
  getPrice(){
    let price = 0;
    this.data.list.forEach((item) =>{
      if(item.selected){
        price = price + (Number(item.goods_price) * Number(item.num))
      }
    })
    this.setData({
      totalPrice: price.toFixed(2)
    })
  },

  // 结算
  buyBtn(){
    let arr = [], that = this;
    this.data.list.forEach((item) => {
      if (item.selected) {
        arr.push(item.id)
      }
    })

    if (arr.length < 1) {
      app.$tip('请选择商品!');
      return
    }

    let data = {
      ids: arr.toString(),
      type: 1
      // type: that.data.selectType
    }

    wx.navigateTo({
      url: '/pages/confirm_order/confirm_order?data=' + JSON.stringify(data) + '&from=cart&sendType=' + this.data.delivery_methods,
    })
  },

  // 删除
  delBtn(){
    let arr = [], that = this;
    this.data.list.forEach((item) =>{
      if(item.selected){
        arr.push(item.id)
      }
    })

    if(arr.length < 1){
      app.$tip('请选择要删除的商品!');
      return
    }

    wx.showModal({
      title: '温馨提示',
      content: '您确定要删除所选商品吗?',
      confirmText: '删除',
      confirmColor: '#57B127',
      success(res){
        if (res.confirm) {
          app.loading();
          wx.request({
            url: app.baseURL + 'item/delShopingCart',
            data: {
              token: app.globalData.userId,
              ids: arr.toString()
            },
            success(data){
              let ress = data.data;
              if(ress.code == 1){
                app.$tip(ress.msg)
                setTimeout(() =>{
                  that.initData();
                  that.getData();
                  that.getCarts();
                },1500)
              }else{
                app.$tip(ress.msg)
              }
            }
          })
        } else if (res.cancel) {
          // console.log('用户点击取消')
        }
      }
    })

  },

  // 去分类
  toCate(){
    wx.switchTab({
      url: '/pages/cate/cate',
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

})